Árvore de decisão
Objetivo
O dataset Customer Churn – reúne dados de clientes de uma operadora de telecom com o objetivo: prever se o cliente vai cancelar (Churn) ou permanecer.
Descrição das colunas (dicionário de dados)
customerID: ID do cliente
Gender: Gênero do cliente (feminino, masculino)
SeniorCitizen: Se o cliente é idoso ou não (1, 0)
Partner: Se o cliente tem cônjuge/parceiro (Sim, Não)
Dependents: Se o cliente possui dependentes (Sim, Não)
Tenure: Número de meses que o cliente permaneceu na empresa
PhoneService: Se o cliente possui serviço de telefonia (Sim, Não)
MultipleLines: Se o cliente possui múltiplas linhas (Sim, Não, Sem serviço de telefonia)
InternetService: Provedor de internet do cliente (DSL, Fibra óptica, Sem internet)
OnlineSecurity: Se o cliente possui segurança online (Sim, Não, Sem serviço de internet)
OnlineBackup: Se o cliente possui backup online (Sim, Não, Sem serviço de internet)
DeviceProtection: Se o cliente possui proteção de dispositivos (Sim, Não, Sem serviço de internet)
TechSupport: Se o cliente possui suporte técnico (Sim, Não, Sem serviço de internet)
StreamingTV: Se o cliente possui streaming de TV (Sim, Não, Sem serviço de internet)
StreamingMovies: Se o cliente possui streaming de filmes (Sim, Não, Sem serviço de internet)
Contract: Tipo de contrato do cliente (Mês a mês, Um ano, Dois anos)
PaperlessBilling: Se o cliente utiliza fatura digital (Sim, Não)
PaymentMethod: Método de pagamento do cliente (Cheque eletrônico, Cheque enviado, Transferência bancária — automática, Cartão de crédito — automático)
MonthlyCharges: Valor cobrado mensalmente do cliente
TotalCharges: Valor total cobrado do cliente
Churn: Se o cliente cancelou (Sim ou Não)
Pré Processamento
1) padronização de tipos
Normalização de TotalCharges para numérico
2) Tratamento de valores faltantes
Numéricos (tenure, MonthlyCharges, TotalCharges): imputação pela mediana.
Categóricos (gender, Partner, Dependents, PhoneService, MultipleLines, InternetService, OnlineSecurity, OnlineBackup, DeviceProtection, TechSupport, StreamingTV, StreamingMovies, Contract, PaperlessBilling, PaymentMethod, Churn): imputação pela moda (valor mais frequente).
Traceback (most recent call last):
File "C:\SI04Local\MachineLearningLocal\documentation.template\env\Lib\site-packages\markdown_exec\_internal\formatters\python.py", line 71, in _run_python
exec_python(code, code_block_id, exec_globals)
File "C:\SI04Local\MachineLearningLocal\documentation.template\env\Lib\site-packages\markdown_exec\_internal\formatters\_exec_python.py", line 8, in exec_python
exec(compiled, exec_globals) # noqa: S102
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<code block: n1>", line 62, in <module>
df = preprocess(df)
^^^^^^^^^^^^^^
File "<code block: n1>", line 34, in preprocess
label_encoder = LabelEncoder()
^^^^^^^^^^^^
NameError: name 'LabelEncoder' is not defined
Divisão de dados
Os dados foram divididos em 70% para treino e 30% para validação, com o objetivo de evitar overfitting e obter uma estimativa mais fiel de desempenho.
Feature Importances:
| Feature | Importance | |
|---|---|---|
| 18 | TotalCharges | 0.216553 |
| 17 | MonthlyCharges | 0.200873 |
| 14 | Contract | 0.165401 |
| 4 | tenure | 0.112102 |
| 8 | OnlineSecurity | 0.046695 |
| 16 | PaymentMethod | 0.040729 |
| 0 | gender | 0.028548 |
| 7 | InternetService | 0.026263 |
| 2 | Partner | 0.024023 |
| 3 | Dependents | 0.023208 |
| 15 | PaperlessBilling | 0.019727 |
| 1 | SeniorCitizen | 0.019219 |
| 6 | MultipleLines | 0.017198 |
| 10 | DeviceProtection | 0.014329 |
| 13 | StreamingMovies | 0.013331 |
| 9 | OnlineBackup | 0.011663 |
| 11 | TechSupport | 0.011616 |
| 12 | StreamingTV | 0.004789 |
| 5 | PhoneService | 0.003733 |
Avaliação do modelo
O modelo teve accuracy de 74% no conjunto de validação. Para um accuracy maior é necessario análise das variáveis com maior correlação para serem utilizadas no treinamento do modelo